package org.cunamas.web.util;

import java.math.BigDecimal;
import java.math.MathContext;
import java.util.List;

import org.cunamas.core.bean.AlmacenBean;
import org.cunamas.core.bean.AparienciaActitudesConductaBean;
import org.cunamas.core.bean.CocinaBean;
import org.cunamas.core.bean.CondicionesExternasBean;
import org.cunamas.core.bean.DocumentacionYRegistrosBean;
import org.cunamas.core.bean.ImplementosBasicosBean;
import org.cunamas.core.bean.InstrumentosDocumentacionRegistrosBean;
import org.cunamas.core.bean.ItemBean;
import org.cunamas.core.bean.LocalesBean;
import org.cunamas.core.bean.MedidasSeguridadBean;
import org.cunamas.core.bean.MedidasSeguridadLocalBean;
import org.cunamas.core.bean.MonitoreoCruzadoBean;
import org.cunamas.core.bean.ServiciosAlimentariosBean;

public class ExcelReader {
	
	public void readExcelFile(String fileNameTemplate, String fileName,MonitoreoCruzadoBean monitoreoCruzadoBean) {
	
		ServiciosAlimentariosBean totalesServiciosAlimentariosBean = monitoreoCruzadoBean.getTotalesServiciosAlimentariosBean();
		LocalesBean totalesLocalesBean = monitoreoCruzadoBean.getTotalesLocalesBean();
		
		List<ItemBean> calificacionNivelesServiciosAlimentarios = monitoreoCruzadoBean.getCalificacionNivelesServiciosAlimentarios();
		List<ItemBean> calificacionNivelesCocinaBean = monitoreoCruzadoBean.getCalificacionNivelesCocinaBean();
		List<ItemBean> calificacionNivelesAlmacenBean = monitoreoCruzadoBean.getCalificacionNivelesAlmacenBean();
		List<ItemBean> calificacionNivelesMedidasSeguridadBean = monitoreoCruzadoBean.getCalificacionNivelesMedidasSeguridadBean();
		List<ItemBean> calificacionNivelesDocumentacionYRegistrosBean = monitoreoCruzadoBean.getCalificacionNivelesDocumentacionYRegistrosBean();
		
		List<ItemBean> calificacionNivelesLocales = monitoreoCruzadoBean.getCalificacionNivelesLocales();
		List<ItemBean> calificacionNivelesMedidasSeguridadLocalBean = monitoreoCruzadoBean.getCalificacionNivelesMedidasSeguridadLocalBean();
		List<ItemBean> calificacionNivelesImplementosBasicosBean = monitoreoCruzadoBean.getCalificacionNivelesImplementosBasicosBean();
		List<ItemBean> calificacionNivelesInstrumentosDocumentacionRegistrosBean = monitoreoCruzadoBean.getCalificacionNivelesInstrumentosDocumentacionRegistrosBean();
		List<ItemBean> calificacionNivelesAparienciaActitudesConductaBean = monitoreoCruzadoBean.getCalificacionNivelesAparienciaActitudesConductaBean();
		
		String textoResumen = MessagesView.getI18nMessageByParameters("crossMonitoring.textoResumen",
				monitoreoCruzadoBean.getTotalComitesFiltros().multiply(new BigDecimal("100")).divide(monitoreoCruzadoBean.getTotalComitesNacional(), new MathContext(1)),
				monitoreoCruzadoBean.getTotalComitesFiltros(),
				new BigDecimal(totalesServiciosAlimentariosBean.getNumeroComitesGestion()).multiply(new BigDecimal("100")).divide(monitoreoCruzadoBean.getTotalComitesNacional(), new MathContext(1)),
				new BigDecimal(totalesServiciosAlimentariosBean.getNumeroComitesGestion()),
				new BigDecimal(totalesLocalesBean.getNumeroLocales()).multiply(new BigDecimal("100")).divide(monitoreoCruzadoBean.getTotalModulosNacional(), new MathContext(1)),
				new BigDecimal(totalesLocalesBean.getNumeroLocales())
				);
		
		String textoMedidasSeguridadLocal = MessagesView.getI18nMessageByParameters("crossMonitoring.textoMedidasSeguridadLocal", 
				totalesLocalesBean.getNumeroLocales(),
				totalesLocalesBean.getMedidasSeguridadLocalBean().getPctOptimo().add(totalesLocalesBean.getMedidasSeguridadLocalBean().getPctBueno()).multiply(new BigDecimal("100")),
				totalesLocalesBean.getMedidasSeguridadLocalBean().getPctRegular().multiply(new BigDecimal("100")),
				totalesLocalesBean.getMedidasSeguridadLocalBean().getPctDeficiente().multiply(new BigDecimal("100")));
		
		String textoImplementosBasicos = MessagesView.getI18nMessageByParameters("crossMonitoring.textoImplementosBasicos", 
				totalesLocalesBean.getImplementosBasicosBean().getPctOptimo().add(totalesLocalesBean.getImplementosBasicosBean().getPctBueno()).multiply(new BigDecimal("100")));
		
		
		String textoInstrumentosDocumentacionRegistros = MessagesView.getI18nMessage("crossMonitoring.textoInstrumentosDocumentacionRegistros");
		
		String textoAparienciaActitudesConducta = MessagesView.getI18nMessageByParameters("crossMonitoring.textoAparienciaActitudesConducta", 
				totalesLocalesBean.getAparienciaActitudesConductaBean().getPctOptimo().add(totalesLocalesBean.getAparienciaActitudesConductaBean().getPctBueno()).multiply(new BigDecimal("100")));
		
		ExcelUtil xlsUtil = new ExcelUtil(fileNameTemplate);
		
		xlsUtil.setSheet(0);
		xlsUtil.setRow(2);
		xlsUtil.getCell(0).setCellValue(monitoreoCruzadoBean.getTituloReporte());
		
		xlsUtil.setRow(5);
		xlsUtil.getCell(0).setCellValue(textoResumen);
		
		xlsUtil.setRow(6);
		xlsUtil.getCell(102).setCellValue(textoMedidasSeguridadLocal);
		
		xlsUtil.setRow(39);
		xlsUtil.getCell(102).setCellValue(textoImplementosBasicos);
		
		xlsUtil.setRow(77);
		xlsUtil.getCell(102).setCellValue(textoInstrumentosDocumentacionRegistros);
		
		xlsUtil.setRow(111);
		xlsUtil.getCell(102).setCellValue(textoAparienciaActitudesConducta);
		
		//grafico 1.1
		generaGraficoUnoUno(totalesServiciosAlimentariosBean, xlsUtil);
		
		//grafico 1.2
		generaGraficoUnoDos(totalesLocalesBean, xlsUtil);
		
		//CondicionesSeguridad
		generaPieLocalesCondicionesSeguridad(totalesLocalesBean, xlsUtil);
		generaBarLocalesCondicionesSeguridad(totalesLocalesBean, xlsUtil);
		
		//ImplementosBasicos
		generaPieLocalesImplementosBasicos(totalesLocalesBean, xlsUtil);
		generaBarLocalesImplementosBasicos(totalesLocalesBean, xlsUtil);
		
		//InstrumentosDocumentacionRegistros
		generaPieLocalesInstrumentosDocumentacionRegistros(totalesLocalesBean, xlsUtil);
		generaBarLocalesInstrumentosDocumentacionRegistros(totalesLocalesBean, xlsUtil);
		
		//AparienciaActitudesConducta
		generaPieLocalesAparienciaActitudesConducta(totalesLocalesBean, xlsUtil);
		generaBarLocalesAparienciaActitudesConducta(totalesLocalesBean, xlsUtil);
		
		
		//Cocina
		generaPieServiciosAlimentariosCocina(totalesServiciosAlimentariosBean, xlsUtil);
		generaBarServiciosAlimentariosCocina(totalesServiciosAlimentariosBean, xlsUtil);
		
		//Almacen
		generaPieServiciosAlimentariosAlmacen(totalesServiciosAlimentariosBean, xlsUtil);
		generaBarServiciosAlimentariosAlmacen(totalesServiciosAlimentariosBean, xlsUtil);
		
		//MedidasSeguridad
		generaPieServiciosAlimentariosMedidasSeguridad(totalesServiciosAlimentariosBean, xlsUtil);
		generaBarServiciosAlimentariosMedidasSeguridad(totalesServiciosAlimentariosBean, xlsUtil);
		
		//DocumentacionYRegistros
		generaPieServiciosAlimentariosDocumentacionYRegistros(totalesServiciosAlimentariosBean, xlsUtil);
		generaBarServiciosAlimentariosDocumentacionYRegistros(totalesServiciosAlimentariosBean, xlsUtil);
		
		
		//tabla servicios alimentarios
		generaTablaHojaPrincipal(calificacionNivelesServiciosAlimentarios, xlsUtil, 47, 2);
		
		//tabla locales
		generaTablaHojaPrincipal(calificacionNivelesLocales, xlsUtil, 47, 53);
		
		//tabla cocina
		generaTablaPorServicio(calificacionNivelesCocinaBean, xlsUtil, 190, 29);

		//tabla almacen
		generaTablaPorServicio(calificacionNivelesAlmacenBean, xlsUtil, 156, 29);
		
		//tabla MedidasSeguridad
		generaTablaPorServicio(calificacionNivelesMedidasSeguridadBean, xlsUtil, 119, 29);

		//tabla DocumentacionYRegistros
		generaTablaPorServicio(calificacionNivelesDocumentacionYRegistrosBean, xlsUtil, 85, 29);
		
		
		//tabla MedidasSeguridadLocal
		generaTablaPorServicio(calificacionNivelesMedidasSeguridadLocalBean, xlsUtil, 15, 131);

		//tabla ImplementosBasicos
		generaTablaPorServicio(calificacionNivelesImplementosBasicosBean, xlsUtil, 49, 131);

		//tabla InstrumentosDocumentacionRegistros
		generaTablaPorServicio(calificacionNivelesInstrumentosDocumentacionRegistrosBean, xlsUtil, 85, 131);
		
		//tabla AparienciaActitudesConducta
		generaTablaPorServicio(calificacionNivelesAparienciaActitudesConductaBean, xlsUtil, 119, 131);
		
		xlsUtil.createExcel(fileNameTemplate, fileName);
	}

	
	private void generaTablaHojaPrincipal(
			List<ItemBean> calificacionNivelesTotal, ExcelUtil xlsUtil, int filaInicio, int columnaInicio) {
		
		int maximoFilas = CunamasConstants.REGISTROS_MAXIMO_TABLA;
		
		xlsUtil.setSheet(0);
		
		if(calificacionNivelesTotal==null || calificacionNivelesTotal.size()==0) return;
		
		int i=0; 
		int fila = 0, columna = 0;
		
		for (ItemBean itemBean : calificacionNivelesTotal) {
			if(i==0){
				fila = filaInicio;
				columna = columnaInicio;
			}
			else{
				if(i%maximoFilas==0){
					fila=filaInicio;
					columna+=12;
				}
			}

			xlsUtil.setRow(fila);
			xlsUtil.getCell(columna).setCellValue(itemBean.getDescripcion());
			xlsUtil.getCell(columna+6).setCellValue(itemBean.getValorPorcentaje().doubleValue()*100);
			xlsUtil.getCell(columna).setCellStyle(xlsUtil.retornaEstiloPorCalificacion(itemBean.getCalificacion()));
			xlsUtil.getCell(columna+6).setCellStyle(xlsUtil.retornaEstiloPorCalificacion(itemBean.getCalificacion()));
			
			fila+=2;
			i++;
			
		}
	}
	
	private void generaTablaPorServicio(
			List<ItemBean> calificacionNivelesServicio, ExcelUtil xlsUtil, int filaInicio, int columnaInicio) {
		
		int maximoFilas = CunamasConstants.REGISTROS_MAXIMO_TABLA;
		
		xlsUtil.setSheet(0);
		
		if(calificacionNivelesServicio==null || calificacionNivelesServicio.size()==0) return;
		
		int i=0; 
		int fila = 0, columna = 0;
		
		for (ItemBean itemBean : calificacionNivelesServicio) {
			if(i==0){
				fila = filaInicio;
				columna = columnaInicio;
			}
			else{
				if(i%maximoFilas==0){
					fila=filaInicio;
					columna+=8;
				}
			}

			xlsUtil.setRow(fila);
			xlsUtil.getCell(columna).setCellValue(itemBean.getDescripcion());
			xlsUtil.getCell(columna+4).setCellValue(itemBean.getValorPorcentaje().doubleValue()*100);
			xlsUtil.getCell(columna).setCellStyle(xlsUtil.retornaEstiloPorCalificacion(itemBean.getCalificacion()));
			xlsUtil.getCell(columna+4).setCellStyle(xlsUtil.retornaEstiloPorCalificacion(itemBean.getCalificacion()));
			
			fila+=2;
			i++;
			
		}
	}

	private void generaBarServiciosAlimentariosDocumentacionYRegistros(
			ServiciosAlimentariosBean totalesServiciosAlimentariosBean,
			ExcelUtil xlsUtil) {
		DocumentacionYRegistrosBean documentacionYRegistrosBean = totalesServiciosAlimentariosBean.getDocumentacionYRegistrosBean();
		
		BigDecimal[] valores = {
				documentacionYRegistrosBean.getPct341(),
				documentacionYRegistrosBean.getPct342(),
				documentacionYRegistrosBean.getPct343(),
				documentacionYRegistrosBean.getPct344(),
				documentacionYRegistrosBean.getPct345(),
				documentacionYRegistrosBean.getPct346(),
				documentacionYRegistrosBean.getPct347()
		};
		
		for (int i = 14; i <= 20; i++) {
			xlsUtil.setRow(i);
			xlsUtil.getCell(7).setCellValue(valores[i-14].doubleValue());
		}
	}

	private void generaPieServiciosAlimentariosDocumentacionYRegistros(
			ServiciosAlimentariosBean totalesServiciosAlimentariosBean,
			ExcelUtil xlsUtil) {
		DocumentacionYRegistrosBean documentacionYRegistrosBean = totalesServiciosAlimentariosBean.getDocumentacionYRegistrosBean();
		
		BigDecimal[] calificacion = {
				documentacionYRegistrosBean.getPctOptimo(), 
				documentacionYRegistrosBean.getPctBueno(),
				documentacionYRegistrosBean.getPctRegular(), 
				documentacionYRegistrosBean.getPctDeficiente()
		};
		
		for (int i = 8; i <= 11; i++) {
			xlsUtil.setRow(i);
			xlsUtil.getCell(7).setCellValue(calificacion[i-8].doubleValue());
		}
	}

	private void generaBarServiciosAlimentariosMedidasSeguridad(
			ServiciosAlimentariosBean totalesServiciosAlimentariosBean,
			ExcelUtil xlsUtil) {
		MedidasSeguridadBean medidasSeguridadBean = totalesServiciosAlimentariosBean.getMedidasSeguridadBean();
		
		BigDecimal[] valores = {
				medidasSeguridadBean.getPct331(),
				medidasSeguridadBean.getPct332(),
				medidasSeguridadBean.getPct333(),
				medidasSeguridadBean.getPct334(),
				medidasSeguridadBean.getPct335(),
				medidasSeguridadBean.getPct336()
		};
		
		for (int i = 32; i <= 37; i++) {
			xlsUtil.setRow(i);
			xlsUtil.getCell(7).setCellValue(valores[i-32].doubleValue());
		}
	}

	private void generaPieServiciosAlimentariosMedidasSeguridad(
			ServiciosAlimentariosBean totalesServiciosAlimentariosBean,
			ExcelUtil xlsUtil) {
		MedidasSeguridadBean medidasSeguridadBean = totalesServiciosAlimentariosBean.getMedidasSeguridadBean();
		
		BigDecimal[] calificacion = {
				medidasSeguridadBean.getPctOptimo(), 
				medidasSeguridadBean.getPctBueno(),
				medidasSeguridadBean.getPctRegular(), 
				medidasSeguridadBean.getPctDeficiente()
		};
		
		for (int i = 26; i <= 29; i++) {
			xlsUtil.setRow(i);
			xlsUtil.getCell(7).setCellValue(calificacion[i-26].doubleValue());
		}
	}

	private void generaBarServiciosAlimentariosAlmacen(
			ServiciosAlimentariosBean totalesServiciosAlimentariosBean,
			ExcelUtil xlsUtil) {
		AlmacenBean almacenBean = totalesServiciosAlimentariosBean.getAlmacenBean();
		
		BigDecimal[] valores = {
				almacenBean.getPct321(),
				almacenBean.getPct322(),
				almacenBean.getPct323(),
				almacenBean.getPct324(),
				almacenBean.getPct325()
		};
		
		for (int i = 47; i <= 51; i++) {
			xlsUtil.setRow(i);
			xlsUtil.getCell(7).setCellValue(valores[i-47].doubleValue());
		}
	}

	private void generaPieServiciosAlimentariosAlmacen(
			ServiciosAlimentariosBean totalesServiciosAlimentariosBean,
			ExcelUtil xlsUtil) {
		AlmacenBean almacenBean = totalesServiciosAlimentariosBean.getAlmacenBean();
		
		BigDecimal[] calificacion = {
				almacenBean.getPctOptimo(), 
				almacenBean.getPctBueno(),
				almacenBean.getPctRegular(), 
				almacenBean.getPctDeficiente()
		};
		
		for (int i = 41; i <= 44; i++) {
			xlsUtil.setRow(i);
			xlsUtil.getCell(7).setCellValue(calificacion[i-41].doubleValue());
		}
	}

	private void generaBarServiciosAlimentariosCocina(
			ServiciosAlimentariosBean totalesServiciosAlimentariosBean,
			ExcelUtil xlsUtil) {
		CocinaBean cocinaBean = totalesServiciosAlimentariosBean.getCocinaBean();
		
		BigDecimal[] valores = {
				cocinaBean.getPct311(),
				cocinaBean.getPct312(),
				cocinaBean.getPct313(),
				cocinaBean.getPct314(),
				cocinaBean.getPct315(),
				cocinaBean.getPct316()
		};
		
		for (int i = 60; i <= 65; i++) {
			xlsUtil.setRow(i);
			xlsUtil.getCell(7).setCellValue(valores[i-60].doubleValue());
		}
	}

	private void generaPieServiciosAlimentariosCocina(
			ServiciosAlimentariosBean totalesServiciosAlimentariosBean,
			ExcelUtil xlsUtil) {
		CocinaBean cocinaBean = totalesServiciosAlimentariosBean.getCocinaBean();
		
		BigDecimal[] calificacion = {
				cocinaBean.getPctOptimo(), 
				cocinaBean.getPctBueno(),
				cocinaBean.getPctRegular(), 
				cocinaBean.getPctDeficiente()
		};
		
		for (int i = 54; i <= 57; i++) {
			xlsUtil.setRow(i);
			xlsUtil.getCell(7).setCellValue(calificacion[i-54].doubleValue());
		}
	}

	private void generaBarLocalesAparienciaActitudesConducta(
			LocalesBean totalesLocalesBean, ExcelUtil xlsUtil) {
		AparienciaActitudesConductaBean aparienciaActitudesConductaBean = totalesLocalesBean.getAparienciaActitudesConductaBean();
		
		BigDecimal[] valores = {
				aparienciaActitudesConductaBean.getPct441(),
				aparienciaActitudesConductaBean.getPct442(),
				aparienciaActitudesConductaBean.getPct443(),
				aparienciaActitudesConductaBean.getPct444(),
				aparienciaActitudesConductaBean.getPct445()
		};
		
		for (int i = 66; i <= 70; i++) {
			xlsUtil.setRow(i);
			xlsUtil.getCell(1).setCellValue(valores[i-66].doubleValue());
		}
	}

	private void generaPieLocalesAparienciaActitudesConducta(
			LocalesBean totalesLocalesBean, ExcelUtil xlsUtil) {
		AparienciaActitudesConductaBean aparienciaActitudesConductaBean = totalesLocalesBean.getAparienciaActitudesConductaBean();
		
		BigDecimal[] calificacion = {
				aparienciaActitudesConductaBean.getPctOptimo(), 
				aparienciaActitudesConductaBean.getPctBueno(),
				aparienciaActitudesConductaBean.getPctRegular(), 
				aparienciaActitudesConductaBean.getPctDeficiente()
		};
		
		for (int i = 60; i <= 63; i++) {
			xlsUtil.setRow(i);
			xlsUtil.getCell(1).setCellValue(calificacion[i-60].doubleValue());
		}
	}

	private void generaBarLocalesInstrumentosDocumentacionRegistros(
			LocalesBean totalesLocalesBean, ExcelUtil xlsUtil) {
		InstrumentosDocumentacionRegistrosBean instrumentosDocumentacionRegistrosBean = totalesLocalesBean.getInstrumentosDocumentacionRegistrosBean();
		
		BigDecimal[] valores = {
				instrumentosDocumentacionRegistrosBean.getPct431(),
				instrumentosDocumentacionRegistrosBean.getPct432(),
				instrumentosDocumentacionRegistrosBean.getPct433(),
				instrumentosDocumentacionRegistrosBean.getPct434(),
				instrumentosDocumentacionRegistrosBean.getPct435(),
				instrumentosDocumentacionRegistrosBean.getPct436(),
				instrumentosDocumentacionRegistrosBean.getPct437(),
				instrumentosDocumentacionRegistrosBean.getPct438(),
				instrumentosDocumentacionRegistrosBean.getPct439(),
				instrumentosDocumentacionRegistrosBean.getPct4310()
		};
		
		for (int i = 48; i <= 57; i++) {
			xlsUtil.setRow(i);
			xlsUtil.getCell(1).setCellValue(valores[i-48].doubleValue());
		}
	}

	private void generaPieLocalesInstrumentosDocumentacionRegistros(
			LocalesBean totalesLocalesBean, ExcelUtil xlsUtil) {
		InstrumentosDocumentacionRegistrosBean instrumentosDocumentacionRegistrosBean = totalesLocalesBean.getInstrumentosDocumentacionRegistrosBean();
		
		BigDecimal[] calificacion = {
				instrumentosDocumentacionRegistrosBean.getPctOptimo(), 
				instrumentosDocumentacionRegistrosBean.getPctBueno(),
				instrumentosDocumentacionRegistrosBean.getPctRegular(), 
				instrumentosDocumentacionRegistrosBean.getPctDeficiente()
		};
		
		for (int i = 42; i <= 45; i++) {
			xlsUtil.setRow(i);
			xlsUtil.getCell(1).setCellValue(calificacion[i-42].doubleValue());
		}
	}

	private void generaBarLocalesImplementosBasicos(
			LocalesBean totalesLocalesBean, ExcelUtil xlsUtil) {
		ImplementosBasicosBean implementosBasicosBean = totalesLocalesBean.getImplementosBasicosBean();
		
		BigDecimal[] valores = {
				implementosBasicosBean.getPct421(),
				implementosBasicosBean.getPct422(),
				implementosBasicosBean.getPct423(),
				implementosBasicosBean.getPct424(),
				implementosBasicosBean.getPct425(),
				implementosBasicosBean.getPct426(),
				implementosBasicosBean.getPct427(),
				implementosBasicosBean.getPct428()
		};
		
		for (int i = 31; i <= 38; i++) {
			xlsUtil.setRow(i);
			xlsUtil.getCell(1).setCellValue(valores[i-31].doubleValue());
		}
	}

	private void generaPieLocalesImplementosBasicos(
			LocalesBean totalesLocalesBean, ExcelUtil xlsUtil) {
		ImplementosBasicosBean implementosBasicosBean = totalesLocalesBean.getImplementosBasicosBean();
		
		BigDecimal[] calificacion = {
				implementosBasicosBean.getPctOptimo(), 
				implementosBasicosBean.getPctBueno(),
				implementosBasicosBean.getPctRegular(), 
				implementosBasicosBean.getPctDeficiente()
		};
		
		for (int i = 25; i <= 28; i++) {
			xlsUtil.setRow(i);
			xlsUtil.getCell(1).setCellValue(calificacion[i-25].doubleValue());
		}
	}

	private void generaBarLocalesCondicionesSeguridad(LocalesBean totalesLocalesBean, ExcelUtil xlsUtil) {
		CondicionesExternasBean condicionesExternasBean = totalesLocalesBean.getCondicionesExternasBean();
		MedidasSeguridadLocalBean medidasSeguridadLocalBean = totalesLocalesBean.getMedidasSeguridadLocalBean();
		
		BigDecimal[] valores = {
				condicionesExternasBean.getPct22(),
				condicionesExternasBean.getPct23(),
				medidasSeguridadLocalBean.getPct411(), 
				medidasSeguridadLocalBean.getPct412(),
				medidasSeguridadLocalBean.getPct413(), 
				medidasSeguridadLocalBean.getPct414(),
				medidasSeguridadLocalBean.getPct415(), 
				medidasSeguridadLocalBean.getPct416(),
				medidasSeguridadLocalBean.getPct417()
		};
		
		for (int i = 14; i <= 22; i++) {
			xlsUtil.setRow(i);
			xlsUtil.getCell(1).setCellValue(valores[i-14].doubleValue());
		}
	}

	private void generaPieLocalesCondicionesSeguridad(LocalesBean totalesLocalesBean, ExcelUtil xlsUtil) {
		MedidasSeguridadLocalBean medidasSeguridadLocalBean = totalesLocalesBean.getMedidasSeguridadLocalBean();
		
		BigDecimal[] calificacion = {
				medidasSeguridadLocalBean.getPctOptimo(), 
				medidasSeguridadLocalBean.getPctBueno(),
				medidasSeguridadLocalBean.getPctRegular(), 
				medidasSeguridadLocalBean.getPctDeficiente()
		};
		
		for (int i = 8; i <= 11; i++) {
			xlsUtil.setRow(i);
			xlsUtil.getCell(1).setCellValue(calificacion[i-8].doubleValue());
		}
	}

	private void generaGraficoUnoDos(LocalesBean totalesLocalesBean,ExcelUtil xlsUtil) {
		
		//totalesLocalesBean.getCondicionesExternasBean()
		BigDecimal[] optimo ={totalesLocalesBean.getMedidasSeguridadLocalBean().getPctOptimo(),
		totalesLocalesBean.getImplementosBasicosBean().getPctOptimo(),
		totalesLocalesBean.getInstrumentosDocumentacionRegistrosBean().getPctOptimo(),
		totalesLocalesBean.getAparienciaActitudesConductaBean().getPctOptimo()};
		
		BigDecimal[] bueno={totalesLocalesBean.getMedidasSeguridadLocalBean().getPctBueno(),
		totalesLocalesBean.getImplementosBasicosBean().getPctBueno(),
		totalesLocalesBean.getInstrumentosDocumentacionRegistrosBean().getPctBueno(),
		totalesLocalesBean.getAparienciaActitudesConductaBean().getPctBueno()};
		
		BigDecimal[] regular={totalesLocalesBean.getMedidasSeguridadLocalBean().getPctRegular(),
		totalesLocalesBean.getImplementosBasicosBean().getPctRegular(),
		totalesLocalesBean.getInstrumentosDocumentacionRegistrosBean().getPctRegular(),
		totalesLocalesBean.getAparienciaActitudesConductaBean().getPctRegular()};
		
		BigDecimal[] bajo={totalesLocalesBean.getMedidasSeguridadLocalBean().getPctDeficiente(),
		totalesLocalesBean.getImplementosBasicosBean().getPctDeficiente(),
		totalesLocalesBean.getInstrumentosDocumentacionRegistrosBean().getPctDeficiente(),
		totalesLocalesBean.getAparienciaActitudesConductaBean().getPctDeficiente()};
		
		
		for (int i = 2; i <= 5; i++) {
			xlsUtil.setRow(i);
			xlsUtil.getCell(1).setCellValue(optimo[i-2].doubleValue());
			xlsUtil.getCell(2).setCellValue(bueno[i-2].doubleValue());
			xlsUtil.getCell(3).setCellValue(regular[i-2].doubleValue());
			xlsUtil.getCell(4).setCellValue(bajo[i-2].doubleValue());
		}
	}

	private void generaGraficoUnoUno(ServiciosAlimentariosBean totalesServiciosAlimentariosBean,ExcelUtil xlsUtil) {
		
		xlsUtil.setSheet(1);
		
		BigDecimal[] optimo ={totalesServiciosAlimentariosBean.getCocinaBean().getPctOptimo(),
				totalesServiciosAlimentariosBean.getAlmacenBean().getPctOptimo(),
				totalesServiciosAlimentariosBean.getMedidasSeguridadBean().getPctOptimo(),
				totalesServiciosAlimentariosBean.getDocumentacionYRegistrosBean().getPctOptimo()};

		BigDecimal[] bueno={totalesServiciosAlimentariosBean.getCocinaBean().getPctBueno(),
					totalesServiciosAlimentariosBean.getAlmacenBean().getPctBueno(),
					totalesServiciosAlimentariosBean.getMedidasSeguridadBean().getPctBueno(),
					totalesServiciosAlimentariosBean.getDocumentacionYRegistrosBean().getPctBueno()};
		
		BigDecimal[] regular={totalesServiciosAlimentariosBean.getCocinaBean().getPctRegular(),
						totalesServiciosAlimentariosBean.getAlmacenBean().getPctRegular(),
						totalesServiciosAlimentariosBean.getMedidasSeguridadBean().getPctRegular(),
						totalesServiciosAlimentariosBean.getDocumentacionYRegistrosBean().getPctRegular()};
		
		BigDecimal[] bajo={totalesServiciosAlimentariosBean.getCocinaBean().getPctDeficiente(),
						totalesServiciosAlimentariosBean.getAlmacenBean().getPctDeficiente(),
						totalesServiciosAlimentariosBean.getMedidasSeguridadBean().getPctDeficiente(),
						totalesServiciosAlimentariosBean.getDocumentacionYRegistrosBean().getPctDeficiente()};
		
		for (int i = 2; i <= 5; i++) {
			xlsUtil.setRow(i);
			xlsUtil.getCell(7).setCellValue(optimo[i-2].doubleValue());
			xlsUtil.getCell(8).setCellValue(bueno[i-2].doubleValue());
			xlsUtil.getCell(9).setCellValue(regular[i-2].doubleValue());
			xlsUtil.getCell(10).setCellValue(bajo[i-2].doubleValue());
		}
	}

}
